package cn.tedu.util;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

//测试 ArrayList接口
public class Test4 {
    public static void main(String[] args) {
        //1.创建对象
        //本质上底层维护了一个数组，Object[] elementDate，用来存放入ArrayList中的数据
        //jdk1.6，当创建了ArrayList对象时，底层会初始化一个数组，默认容量是10
        //数据多的时候，超过10个时，会自动扩容：旧容量+旧容量/2
        //jdk1.8，但是，一开始是空数组，第一次添加数据时才开始扩充容量
        ArrayList<String>  list =new ArrayList<>();//创建了实现类对象
        //2.调用方法
            //继承自Collection接口的
            //2.add被调用时，拿着数据，直接存入了object[]中
            list.add("1");//存入数组里的0下标处
            list.add("2");//存入数组里的1下标处
            list.add("3");//存入数组里的2下标处
            list.add("1");
            list.add("null");
        System.out.println(list);
        list.add(2,"888");
        System.out.println(list);
            //继承自List接口的

        //模拟ArrayList
        //创建对象时，会创建Objeck[]数组并初始化
        Object[] elementDate={ };//1.8的写法
        elementDate=new Object[10];//1.6的写法
        //添加数据时，把数据存入数组里
        elementDate[0]="1";
        elementDate[1]="2";
        elementDate[2]="3";
        elementDate[3]="1";
        //数据的长度<=10，不会扩容，>10时自动扩容，是以前的1.5倍
        elementDate= Arrays.copyOf(elementDate,15);
        elementDate= Arrays.copyOf(elementDate,22);

        //TODO 练习：求List里的偶数和，奇数个数，平均值
        ArrayList<Integer>  list1 =new ArrayList<>();
        list1.add(1);
        list1.add(2);
        list1.add(3);
        list1.add(4);
        list1.add(5);
        list1.add(6);
        list1.add(7);
        list1.add(8);
        list1.add(9);
        list1.add(10);
        list1.add(11);
        list1.add(12);
        list1.add(13);
        list1.add(14);
        System.out.println(list1);
        int sum=0;
        double  sum1=0;
        int  ge1=0;
        int ge=0;
        for (Integer  d:list1) {
            sum1+=d;
            ge1++;
            if(d%2==0){
                sum+=d;
            }else {
               ge++;
            }
        }
            System.out.println("总数和为："+sum1);
            System.out.println("总个数为："+ge1);
            System.out.println("偶数的和为："+sum+",奇数的个数为:"+ge+"，平均值为："+sum1/ge1);
        //TODO 练习：求List里的最大值最小值
        int max=0;
        for (int i = 0; i < list1.size() ; i++) {
            if (max<list1.get(i)){
                max= list1.get(i);
            }
        }
            System.out.println("最大值："+max);
        int min=1000000000;
        for (int i = 0; i < list1.size() ; i++) {
            if (min>list1.get(i)){
                min= list1.get(i);
            }
        }
            System.out.println("最小值："+min);
    }
}
